package com.demo.java.OD151_200.OD159;

import java.util.Scanner;
import java.util.Arrays;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【寻找连续区间】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145764688
 */
public class OdMain {
    public static int solution_01() {
        // 输入处理
        Scanner sc = new Scanner(System.in);
        String[] line1_list = sc.nextLine().split(" ");
        String[] line2_list = sc.nextLine().split(" ");

        int N = Integer.parseInt(line1_list[0]); // 数组的大小
        int x = Integer.parseInt(line1_list[1]); // 阈值 x
        int[] num_list = new int[line2_list.length]; // 数字数组
        for (int i = 0; i < line2_list.length; i++) {
            num_list[i] = Integer.parseInt(line2_list[i]);
        }

        // 计算前缀和
        int[] sum = new int[N + 1];
        for (int i = 1; i <= N; i++) {
            sum[i] = sum[i - 1] + num_list[i - 1];
        }

        // 计算符合条件的区间数
        int count = 0;
        for (int i = 0; i < N; i++) {
            int index = Arrays.binarySearch(sum, sum[i] + x); // 查找最小满足条件的右端点
            if (index < 0) {
                index = -(index + 1); // 如果没有找到，则找插入位置
            }
            count += N - index + 1; // 统计符合条件的区间数量
        }

        return count;
    }

    public static void main(String[] args) {
        int ans = solution_01(); // 调用解题函数
        System.out.println(ans);  // 输出结果
    }
}